1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.solr.util;
19
20 import java.io.IOException;
21 import java.lang.invoke.MethodHandles;
22 import java.util.Map;
23
24 import org.apache.lucene.index.IndexWriter;
25 import org.apache.lucene.index.MergePolicy;
26 import org.apache.lucene.index.MergeTrigger;
27 import org.apache.lucene.index.SegmentCommitInfo;
28 import org.apache.lucene.index.SegmentInfos;
29 import org.apache.lucene.util.LuceneTestCase;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33
34
35
36
37
38
39 public final class RandomMergePolicy extends MergePolicy {
40
41 private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
42
43
44
45
46
47 final MergePolicy inner;
48
49 public RandomMergePolicy() {
50 this(LuceneTestCase.newMergePolicy());
51 }
52
53 private RandomMergePolicy(MergePolicy inner) {
54 super(inner.getNoCFSRatio(),
55 (long) (inner.getMaxCFSSegmentSizeMB() * 1024 * 1024));
56 this.inner = inner;
57 log.info("RandomMergePolicy wrapping {}: {}",
58 inner.getClass(), inner);
59 }
60
61 @Override
62 public MergeSpecification findForcedDeletesMerges(SegmentInfos segmentInfos, IndexWriter writer)
63 throws IOException {
64
65 return inner.findForcedDeletesMerges(segmentInfos, writer);
66 }
67
68 @Override
69 public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
70 int maxSegmentCount,
71 Map<SegmentCommitInfo,Boolean> segmentsToMerge,
72 IndexWriter writer)
73 throws IOException {
74
75 return inner.findForcedMerges(segmentInfos, maxSegmentCount, segmentsToMerge, writer);
76 }
77
78 @Override
79 public MergeSpecification findMerges(MergeTrigger mergeTrigger,
80 SegmentInfos segmentInfos,
81 IndexWriter writer)
82 throws IOException {
83
84 return inner.findMerges(mergeTrigger, segmentInfos, writer);
85 }
86
87 @Override
88 public boolean useCompoundFile(SegmentInfos infos,
89 SegmentCommitInfo mergedInfo,
90 IndexWriter writer)
91 throws IOException {
92
93 return inner.useCompoundFile(infos, mergedInfo, writer);
94 }
95
96 }